home *** CD-ROM | disk | FTP | other *** search
/ CD Ware Multimedia 1994 November / Cd Ware (Nro. 2) - Epimundo.iso / DOS / CM / PSRT_14.ZIP / DEVOBJ.ZIP / offset.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1994-04-13  |  957 b   |  56 lines

  1. // quick&dirty offset seeker (c) 1994 by Rolf K. Wilms
  2.  
  3. #include <iostream.h>
  4. #include <stdio.h>
  5. #include <string.h>
  6. #include <stdlib.h>
  7. #include <io.h>
  8. #include <fcntl.h>
  9. #include <sys/types.h>
  10. #include <sys/stat.h>
  11. #include <fstream.h>
  12.  
  13. int main(int argc, char *argv[])
  14. {
  15.   if(argc != 3)
  16.     {
  17.     cout << "Usage: offset searchstring infile" << endl;
  18.     exit(1);
  19.     }
  20.  
  21.   ifstream in(open(argv[2], O_RDONLY|O_BINARY));
  22.   in.seekg(0);
  23.  
  24.   char *line, *p = NULL, buffer[4096];
  25.   unsigned int pos = 0, len;
  26.  
  27.   do
  28.     {
  29.     line = NULL;
  30.     in.gets(&line, 0);
  31.     len = strlen(line);
  32.     if(line != NULL)
  33.       {
  34.       p = strstr(line, argv[1]);
  35.       if(line != buffer) free(line);
  36.       if(p != NULL) break;
  37.       }
  38.     pos += len+1;
  39.     }
  40.   while(in.good);
  41.  
  42.   in.close();
  43.  
  44.   if(p != NULL)
  45.     {
  46.     cout << (pos + p - line);
  47.     }
  48.   else
  49.     {
  50.     cout << "no match";
  51.     exit(1);
  52.     }
  53.  
  54.   exit(0);
  55. }
  56.